/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.esmp.sysml.componentmodel.profile.rtos;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.uml2.uml.Port;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Runnable Port</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#getBase_Port <em>Base Port</em>}</li>
 *   <li>{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#getQueueSize <em>Queue Size</em>}</li>
 *   <li>{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#isBlocking <em>Blocking</em>}</li>
 *   <li>{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#isWaking <em>Waking</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.esmp.sysml.componentmodel.profile.rtos.RTOSPackage#getRunnablePort()
 * @model
 * @generated
 */
public interface RunnablePort extends EObject {
	/**
	 * Returns the value of the '<em><b>Base Port</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Base Port</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Base Port</em>' reference.
	 * @see #setBase_Port(Port)
	 * @see org.esmp.sysml.componentmodel.profile.rtos.RTOSPackage#getRunnablePort_Base_Port()
	 * @model required="true" ordered="false"
	 * @generated
	 */
	Port getBase_Port();

	/**
	 * Sets the value of the '{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#getBase_Port <em>Base Port</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Base Port</em>' reference.
	 * @see #getBase_Port()
	 * @generated
	 */
	void setBase_Port(Port value);

	/**
	 * Returns the value of the '<em><b>Queue Size</b></em>' attribute.
	 * The default value is <code>"1"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Queue Size</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Queue Size</em>' attribute.
	 * @see #setQueueSize(int)
	 * @see org.esmp.sysml.componentmodel.profile.rtos.RTOSPackage#getRunnablePort_QueueSize()
	 * @model default="1" required="true" ordered="false"
	 * @generated
	 */
	int getQueueSize();

	/**
	 * Sets the value of the '{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#getQueueSize <em>Queue Size</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Queue Size</em>' attribute.
	 * @see #getQueueSize()
	 * @generated
	 */
	void setQueueSize(int value);

	/**
	 * Returns the value of the '<em><b>Blocking</b></em>' attribute.
	 * The default value is <code>"false"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Blocking</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Blocking</em>' attribute.
	 * @see #setBlocking(boolean)
	 * @see org.esmp.sysml.componentmodel.profile.rtos.RTOSPackage#getRunnablePort_Blocking()
	 * @model default="false" required="true" ordered="false"
	 * @generated
	 */
	boolean isBlocking();

	/**
	 * Sets the value of the '{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#isBlocking <em>Blocking</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Blocking</em>' attribute.
	 * @see #isBlocking()
	 * @generated
	 */
	void setBlocking(boolean value);

	/**
	 * Returns the value of the '<em><b>Waking</b></em>' attribute.
	 * The default value is <code>"true"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Waking</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Waking</em>' attribute.
	 * @see #setWaking(boolean)
	 * @see org.esmp.sysml.componentmodel.profile.rtos.RTOSPackage#getRunnablePort_Waking()
	 * @model default="true" required="true" ordered="false"
	 * @generated
	 */
	boolean isWaking();

	/**
	 * Sets the value of the '{@link org.esmp.sysml.componentmodel.profile.rtos.RunnablePort#isWaking <em>Waking</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Waking</em>' attribute.
	 * @see #isWaking()
	 * @generated
	 */
	void setWaking(boolean value);

} // RunnablePort
